1. Technical Field
This invention generally relates to data processing, and more specifically relates to registers in a computer system.
2. Background Art
In modern computer systems, multithreading has been used to keep high frequency processors from being idle a majority of the time. In general, this is accomplished by allowing multiple threads to execute at once on a single physical processor. Each thread requires its own copy of the architected register file. Thus, in a processor architecture as shown in FIG. 1 with 32 general purpose registers, 32 floating-point registers, and 32-48 physical rename registers (required because of long latency pipelines), a two thread implementation would require one set of each registers per thread.
If a processor implements 2-way hardware multithreading, execution of the two threads is swapped on cache misses in an effort to keep the processor as busy as possible. Software multithreading is also known that allows multiple threads to issue and dispatch instructions simultaneously. Regardless of whether hardware or software multithreading is used, the use of two threads typically requires twice as many architected registers.
New multithreading schemes have been proposed with four or more threads extent at one time. Four threads require four sets of artichtected registers, as shown in FIG. 2. The number of registers in each groups is quadrupled to provide a separate set of registers for each of the four threads. Quadrupling the number of registers substantially increases read delay, results in a very large increase in power usage, and results in a substantial increase in integrated circuit real estate to implement the registers. These drawbacks are significant, and have hindered the development of multi-threaded systems that have more than two threads. Without an improved register file that avoids these drawbacks, the computer industry will continue to suffer from excessively expensive ways of providing more than two threads of execution in a computer system.